這個單元繼續討論 Composition API,那麼在生命週期上與 Option API 的寫法上有什麼不同?
與之前 Day19 介紹的 Option API 有所不同,只剩下 onBeforeMount, onMounted, onBeforeUpdate, onUpdated, onBeforeUnmount, onUnmounted 這些生命週期可以呼叫,例如:
<template>
</template>
<script>
import {
  onBeforeMount,
  onMounted,
  onBeforeUpdate,
  onUpdated,
  onBeforeUnmount,
  onUnmounted,
  ref,
} from 'vue';
export default {
  name: 'App',
  setup() {
    onBeforeMount(() => {
      console.log('onBeforeMount');
    });
    onMounted(() => {
      console.log('onMounted');
    });
    onBeforeUpdate(() => {
      console.log('onBeforeUpdate');
    });
    onUpdated(() => {
      console.log('onUpdated');
    });
    onBeforeUnmount(() => {
      console.log('onBeforeUnmount');
    });
    onUnmounted(() => {
      console.log('onUnmounted');
    });
  },
};
</script>
此外,也可以將與 UI 邏輯相關的程式放在 onMounted 裡:
<template>
  <input type="text" ref="inputRef" />
</template>
<script>
import { onMounted, ref } from 'vue';
export default {
  name: 'App',
  setup() {
    const inputRef = ref(null);
    onMounted(() => {
      console.log('onMounted');
      //測試 onMounted
      inputRef.value.focus();
    });
    
    return {
      inputRef,
    };
  },
};
</script>
在這裡放使用了 inputRef.value.focus(); 一樣是網頁呈現完成後,可以直接指定 <input type="text" ref="inputRef" /> 這個輸入框。
Vue3 - 從零開始學 - Day25 [完]